/*
 * @Descripttion: 
 * @version: 
 * @Author: qingzi
 * @Date: 2023-02-14 15:31:30
 * @LastEditors: qingzi
 * @LastEditTime: 2023-03-16 14:57:28
 */
// 通过 pinia 提供的 defineStore 接口来创建一个状态管理实例
import { PROJECTID,ISSEIMIC,PROJECTINFO } from '@/utils/const';
import { defineStore, createPinia } from 'pinia';
import {localStorage as localStorage1} from "@/utils/storage"
// import { standardInfo } from '@/api/city';
import { objectType } from '@/types/system-types';


const store = createPinia()
export default store
// 第一个参数: 容器的ID(必须唯一) 后面Pinia会把所有的容器挂载到根容器
// 第二个参数：选项配置对象, state / getter / action
// 返回值：一个函数, 调用即可得到状态管理容器实例


//  用到zhw
export const useStore = defineStore('managestate', {
    // 这块vue2中是一个对象,但在这里必须是一个函数(箭头函数)
    // 为什么必须是函数呢? 在服务端渲染的时候避免交叉请求导致的数据状态污染
    // 那又为什么是箭头函数呢? 为了TypeScript更好的类型推导
    // 另外也可以这么写: state: () => ({...})
    persist: {
      enabled: true,//开启数据持久化
      strategies: [
        {
          key: 'managestate',//给一个要保存的名称
          storage: localStorage,//sessionStorage / localStorage 存储方式
        }
      ]
    },
  state: () => {
      return {
        groundMotiontype: null, // 全局地震动类型
        // projectId: 62,
        projectId: localStorage1.get(PROJECTID), // 全局项目id
        // projectId: 'xxxxxxx', // 全局项目id
        isSeimic:localStorage1.get(ISSEIMIC),
        num: 2,
        menuActivePath: '',
        projectInfo:localStorage1.get(PROJECTINFO)
      }
  },
  actions: {
    add() {
      this.num++
    },
    getprojectId() { 
      return this.projectId
    },
    setProjectInfo(project: objectType) {
      this.projectInfo = project
      localStorage1.set(PROJECTINFO,project)
    },
    // setSeismic() {
    //   // this.isSeimic =project
    //   return  new Promise((resovle, reject) => {
    //     standardInfo().then(res => {
    //       this.isSeimic = res.data
    //       localStorage1.set(ISSEIMIC, res.data)
    //       resovle(res.data)
    //     }).catch(err=>reject(err))
    //   })
      
    // },
  },
  getters: {
    getProjectInfo(state) {
      return state.projectInfo
    },
    getProjectId(state) {
      return state.projectId
    },
      getMenu(state) { 
        return state.num *= 2
    },
    getSeismic(state) {
      return state.isSeimic
    },
    getToughness_activeIndex() { 
    },
    getMenuActivePath(state){
    return state.menuActivePath
    }
  },
 
})

export function userStoreProInfoHook() {
  return useStore(store)
}



// 路由相关状态
export const routerIndex = defineStore('routerIndex', {
    // 这块vue2中是一个对象,但在这里必须是一个函数(箭头函数)
    // 为什么必须是函数呢? 在服务端渲染的时候避免交叉请求导致的数据状态污染
    // 那又为什么是箭头函数呢? 为了TypeScript更好的类型推导
    // 另外也可以这么写: state: () => ({...})
    persist: {
      enabled: true,//开启数据持久化
      strategies: [
        {
          key: 'routerIndex',//给一个要保存的名称
          storage: localStorage,//sessionStorage / localStorage 存储方式
        }
      ]
    },
  state: () => {
    return {
        Toughness_single_activeIndex:0, // 韧性评论单体下一级导航状态
        Toughness_activeIndex:0, // 韧性评论区域下一级导航状态
        single_active_index: 0, // 二级导航
        area_active_index: 0, 
        menu_active_path:''  //menu下的导航状态
      }
  },
  actions: {
  },
  getters: {
    getMenu(state) { 
    },
  },
 
})

